package br.com.senac.pi.dao;

import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

import br.com.senac.pi.modelo.Fabricante;
import br.com.senac.pi.persistence.PersistenceModule;
import br.com.senac.pi.util.FilesType;

public class FabricanteDAO {

private PersistenceModule persistenceModule;
	
	public FabricanteDAO(PersistenceModule persistenceModule) {
		this.persistenceModule = persistenceModule;
	}
	
	public void persistData(Fabricante fabricante) throws FileNotFoundException {
		Long id = persistenceModule.persistData(fabricante);
		fabricante.setId(id);
	}
	
	public List<Fabricante> getListaCompleta() throws FileNotFoundException {
		List<Fabricante> result = new ArrayList<Fabricante>();
		List<String> dados = persistenceModule.listData(FilesType.FABRICANTE);
		
		for (String dado : dados) {
			Fabricante fabricante = new Fabricante();
			fabricante.parseData(dado);
			result.add(fabricante);
		}
		
		return result;
	}
	
	public void remove(List<Fabricante> fabricantes) throws FileNotFoundException {
		for (Fabricante fabricante : fabricantes) {
			persistenceModule.remove(fabricante);	
		}		
	}
	
	public void remove(Fabricante fabricante) throws FileNotFoundException {
		List<Fabricante> lista = getListaCompleta();
		if (lista.isEmpty()) {
			System.out.println("Fabricante nao encontrado...");
		}
		
		for (Fabricante fabric : lista) {
			if (fabric.compare(fabricante)) {
				persistenceModule.remove(fabric);
			}
		}
		
		persistenceModule.remove(fabricante);			
	}
	
	public List<Fabricante> buscaByFabricante(Fabricante fabricante) throws FileNotFoundException {
		List<Fabricante> result = new ArrayList<Fabricante>();
		List<String> dados = persistenceModule.listData(FilesType.FABRICANTE);
		
		for (String dado : dados) {
			Fabricante fab = new Fabricante();
			fab.parseData(dado);
			if(fab.compare(fabricante)) {
				result.add(fab);
			}
		}
		
		return result;
	}
	
}
